<?php
class ContenidoKakoon extends Datos
{
    public $contenidokakoon_id;
    public $seccionkakoon_id;
    public $tipo;
    public $titulo;
    public $posicion;
    
    const TABLA             = "contenidoskakoon";
    const CLAVE_PRIMARIA    = "contenidokakoon_id";

    public function getElementoPorSector ($sector)
    {
        $retorno = null;

        $sql = "SELECT ". ElementoKakoon::CLAVE_PRIMARIA . " FROM ". ElementoKakoon::TABLA;
        $sql.= " WHERE ". self::CLAVE_PRIMARIA ."=". $this->getIdentificador();
        $sql.= " AND sector='". $sector ."' LIMIT 1";

        $resultado = $this->accesoBD->queryBDCampo ($sql);
        
        if ($resultado > 0)
        {
            $retorno = new ElementoKakoon($this->accesoBD, $resultado);
        }
        
        return $retorno;
    }
    
	public function registraPosicion()
	{
		$sql = "SELECT posicion FROM ". self::TABLA ." ORDER BY posicion DESC LIMIT 1";
		
		$posicion  = 1;
		$resultado = $this->accesoBD->queryBDCampo ($sql);
		
		if ($resultado > 0 && $resultado)
		{
		    $posicion = ($resultado + 1);
		}
		
		$this->setPropiedad("posicion", $posicion);
	}

	public function sube()
	{
		$sql = "SELECT ". self::CLAVE_PRIMARIA .",posicion FROM ". self::TABLA;
		$sql.= " WHERE posicion > ". $this->getPropiedad("posicion") ." ORDER BY posicion ASC LIMIT 1";
		
		$resultado = $this->accesoBD->queryBDObjeto ($sql);
		 
		if ($resultado instanceof ObjetoResultadoAccesoBD)
		{
			$otroMenuPublico = new ContenidoKakoon($this->getAccesoBD(), $resultado->getValor(self::CLAVE_PRIMARIA));
			$otroMenuPublico->setPropiedad ("posicion", $this->getPropiedad("posicion"));
			$otroMenuPublico->consolida();

			$this->setPropiedad("posicion", $resultado->getValor("posicion"));
			$this->consolida();
		}
	}

	public function baja()
	{
		$sql = "SELECT ". self::CLAVE_PRIMARIA .",posicion FROM ". self::TABLA;
		$sql.= " WHERE posicion < ". $this->getPropiedad("posicion") ." ORDER BY posicion DESC LIMIT 1";
		 
		$resultado = $this->accesoBD->queryBDObjeto ($sql);

        if ($resultado instanceof ObjetoResultadoAccesoBD)
        {
            $otroMenuPublico = new ContenidoKakoon($this->getAccesoBD(), $resultado->getValor(self::CLAVE_PRIMARIA));
            $otroMenuPublico->setPropiedad ("posicion", $this->getPropiedad("posicion"));
            $otroMenuPublico->consolida();

            $this->setPropiedad("posicion", $resultado->getValor("posicion"));
            $this->consolida();
        }
	}
    
    public function registraTipos()
    {
        $tabla   = SeccionKakoon::TABLA;
        $filtro  = SeccionKakoon::CLAVE_PRIMARIA;
        $valores = array();
        
        $tipos = ModeloTipoContenidoKakoon::getListado();
        
        foreach ($tipos as $unTipo)
        {
            $valores[$unTipo] = $unTipo;
        }
        
        $this->setTipo($filtro,    new TipoDatoRelacionFijo($this->accesoBD, $tabla, array("titulo"), $filtro));	
        $this->setTipo("tipo",     new TipoDatoSeleccion($valores));	
        $this->setTipo("titulo",   new TipoDatoLiteral(100));	
        $this->setTipo("posicion", new TipoDatoEntero());
    }   
    
    public function registraEsenciales()
    {
    	$this->setEsencial(SeccionKakoon::CLAVE_PRIMARIA);
    	$this->setEsencial("tipo");
    	$this->setEsencial("titulo");
        $this->setEsencial("posicion");
    }
    
    public function registraUnicos()
    {
    	$this->setUnico(array(SeccionKakoon::CLAVE_PRIMARIA, "titulo"));
    }

    public function registraMetas()
    {
    	$this->setInfo(SeccionKakoon::CLAVE_PRIMARIA, 	"Seccion", 	"Seccion a la que pertenece el contenido");
    	$this->setInfo("tipo", 							"Tipo", 	"Tipo del contenido");
    	$this->setInfo("titulo", 						"Titulo", 	"Titulo del contenido");
		$this->setInfo("posicion",    					"Posicion",	"Posicion en la que aparece este contenido al mostrar la seccion");
    }
     
    public function getTabla()
    {
        return self::TABLA;
    }

    public function getClavePrimaria()
    {
        return self::CLAVE_PRIMARIA;
    }
}
?>